#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#define offset 10
using namespace std;

struct point
{
    double x;
    double y;
    double sum;
};

bool cmp(struct point a, struct point b)
{
    return a.sum < b.sum;
}
//使用歪门邪道试试
struct point points[1000010];

int main()
{
    ios::sync_with_stdio(false);
    long long N, i, j;
    double x, y, min, dst;
    while (cin >> N)
    {
        if (N == 0)
        {
            break;
        }
        for (i = 0; i < N; i++)
        {
            cin >> points[i].x >> points[i].y;
            points[i].sum = points[i].x + points[i].y;
        }
        sort(points, points + N, cmp);
        min = 10000000.0;
        if (N < offset)
        {
            for (i = 0; i < N - 1; i++)
            {
                dst = pow(points[i].x - points[i + 1].x, 2) + pow(points[i].y - points[i + 1].y, 2);
                if (dst < min)
                {
                    min = dst;
                }
            }
        }
        else
        {
            for (i = 0; i < N - offset; i++)
            {
                for (j = i + 1; j < i + offset; j++)
                {
                    dst = pow(points[i].x - points[j].x, 2) + pow(points[i].y - points[j].y, 2);
                    if (dst < min)
                    {
                        min = dst;
                    }
                }
            }

        }
        cout << fixed << setprecision(2) << sqrt(min) / 2 << endl;
    }
    return 0;
}